package com.springboot.service.htmlTool;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class HtmlParser {
    public static void main(String[] args) throws Exception {
        // 假设你已经将所有的链接填充到了相应的位置

        Document doc = Jsoup.parse(HtmlString.content);

        // 存储最终结果
        List<Map<String, List<Map<String, String>>>> result = new ArrayList<>();

        Elements items = doc.select(".nav_content > .item");

        for (Element item : items) {
            Element h2 = item.selectFirst("h2");
            if (h2 != null) { // 如果存在h2标签
                String category = h2.text().replaceAll("<.*?>", ""); // 移除可能存在的html标签

                Elements links = item.select(".child a");
                List<Map<String, String>> linksArray = new ArrayList<>();
                for (Element link : links) {
                    Map<String, String> linkInfo = new HashMap<>();
                    linkInfo.put("href", link.attr("href"));
                    linkInfo.put("text", link.text());
                    linkInfo.put("className", link.className()); // 获取class属性值
                    linksArray.add(linkInfo);
                }

                // 如果该类别下没有任何链接，则跳过
                if (!linksArray.isEmpty()) {
                    // 将category和linksArray放入Map中
                    Map<String, List<Map<String, String>>> categoryMap = new HashMap<>();
                    categoryMap.put(category, linksArray);
                    result.add(categoryMap);
                }
            } else { // 对于没有h2标签但有链接的item
                Elements otherLinks = item.select("a");
                if (!otherLinks.isEmpty()) {
                    List<Map<String, String>> linksArray = new ArrayList<>();
                    for (Element link : otherLinks) {
                        Map<String, String> linkInfo = new HashMap<>();
                        linkInfo.put("href", link.attr("href"));
                        linkInfo.put("text", link.text());
                        linkInfo.put("className", link.className());
                        linksArray.add(linkInfo);
                    }

                    // 假设这类条目的标题为“其他资源”
                    Map<String, List<Map<String, String>>> categoryMap = new HashMap<>();
                    categoryMap.put("其他资源", linksArray);
                    result.add(categoryMap);
                }
            }
        }

        // 输出结果
        System.out.println(JSONUtil.parseArray(result));
    }
}